#ifndef TEST_COREGAME_IMPL_HPP
#define TEST_COREGAME_IMPL_HPP

////////////////////////////////////////////////////////////
// Headers
////////////////////////////////////////////////////////////
#include <SFML/Window/VideoMode.hpp>

#include <SmegTools/Pattern/Singleton.hpp>

#include <SmegCore/Game/DefaultGameImpl.hpp>
#include <SmegCore/Entity/MovableEntity.hpp>

class Test_CoreGameImpl : public smeg::core::DefaultGameImpl
{
public:
    ////////////////////////////////////////////////////////////
    /// Constructor/Destructor
    ///
    ////////////////////////////////////////////////////////////
                        Test_CoreGameImpl();
    virtual             ~Test_CoreGameImpl();

    DECLARE_CLONE_FUNC( Test_CoreGameImpl, smeg::core::DefaultGameImpl )

    ////////////////////////////////////////////////////////////
    /// Init the game
    ///
    /// \param _pRenderWindow
    ///
    ////////////////////////////////////////////////////////////
    virtual void        Init( sf::RenderWindow* _pRenderWindow );

    ////////////////////////////////////////////////////////////
    /// DeInit the game
    ///
    ////////////////////////////////////////////////////////////
    virtual void        DeInit();

    ////////////////////////////////////////////////////////////
    /// Manage an incoming event
    ////////////////////////////////////////////////////////////
    virtual void        ManageEvent( const sf::Event& _Event );

    ////////////////////////////////////////////////////////////
    /// Call all the Update in the other systems
    ////////////////////////////////////////////////////////////
    virtual void        Update( float _fDeltaTime );

    ////////////////////////////////////////////////////////////
    /// Call all the Render in the other systems
    ////////////////////////////////////////////////////////////
    virtual void        Render();

protected:
    smeg::core::MovableEntity   *m_pMovableEntity;
};


#endif // TEST_COREGAME_IMPL_HPP
